package start.demo2learn.file;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 提供文件处理
 */
public class FileHandler {
    private static String FILE_URL="D:\\file";
    private static List<String> list=null;
    private static File file;
    static{
        file=new File(FILE_URL);
        if(!file.isDirectory())
            file.mkdir();
        list=new ArrayList<>();
    }

    public void getDirectory(){//取目录
        list.clear();
        String[] l=file.list();
        for(String c:l){
            list.add(c);
            System.out.println(c);
        }
    }

    public static Object classCopy(Object src){//对象深复制
        Object target=null;
        try{
            // 将该对象序列化成流,因为写在流里的是对象的一个拷贝，而原对象仍然存在于JVM里面。所以利用这个特性可以实现对象的深拷贝
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(src);
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bais);
            target =ois.readObject();
            oos.close();//未加锁，
            baos.close();
            bais.close();
            ois.close();
            // 将流序列化成对象

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return target;
    }
}
